import player from "./Player";
const {ccclass, property} = cc._decorator;

@ccclass
export default class Item_drop extends cc.Component {

    /*
    蓝瓶血瓶
    */

    @property({displayName: "是否加血", tooltip: "是否加血，如果是血瓶就打钩"})
    is_add_HP: boolean = false;

    @property({displayName: "加血加多少", tooltip: "加血加多少", type: cc.Float})
    add_HP_num: number = 300;


    @property({displayName: "是否加蓝", tooltip: "是否加蓝，如果是蓝瓶就打钩"})
    is_add_MP: boolean = false;

    @property({displayName: "加蓝加多少", tooltip: "加蓝加多少", type: cc.Float})
    add_MP_num: number = 300;



    // 绿色字体
    green_typeface: cc.Font = null;



    // Player脚本所在节点
    player: player = null;


    onLoad () {
        // 获取Player脚本
        this.player = cc.find("Canvas/player").getComponent("Player");

        // 获取绿色字体
        this.green_typeface = cc.find("Canvas").getComponent("Game_Controller").green_typeface;
    }

    // 角色回血   num为回多少
    add_HP (num: number) {
        // 回血
        this.player.add_HP(num);
    }

    // 角色回蓝   num为回多少
    add_MP (num: number) {
        // 回蓝
        this.player.add_MP(num);
    }


    // 碰撞回调
    // 当碰撞产生的时候调用   other 产生碰撞的另一个碰撞组件self  产生碰撞的自身的碰撞组件
    onCollisionEnter (other, self) {
        // 如果角色捡到了
        if (other.node.group == "player") {
            // 如果可以加血
            if (this.is_add_HP == true) {
                // 加血
                this.add_HP(this.add_HP_num);
                // 新建文字显示
                this.new_num(this.add_HP_num);
            }
            // 如果可以加蓝
            if (this.is_add_MP == true) {
                // 加蓝
                this.add_MP(this.add_MP_num);
                // 新建文字显示
                this.new_num(this.add_MP_num);
            }

            // 自身销毁
            this.node.destroy();
        }
    }


    // 创建新的绿色数字函数，num为数字的值
    new_num (num: number) {
        // 创建新的节点
        let node = new cc.Node;
        // 添加label
        node.addComponent(cc.Label);

        // 获取label
        let lb = node.getComponent(cc.Label);
        // 显示数字
        lb.string = Math.floor(num).toString();
        // 设置字体
        lb.font = this.green_typeface;

        // 父节点为canvas
        node.parent = cc.find("Canvas");
        // 设置坐标
        node.x = this.player.node.x;
        node.y = this.player.node.y + (this.player.node.height / 2) + 30;


        // 移动动作
        let move = cc.moveBy(2, cc.v2(0, 100));
        // 回调函数
        let func = cc.callFunc(function () {
            node.destroy();
        }, this);
        // 两个动作结合在一起
        let action = cc.sequence(move, func);
        // 执行动作
        node.runAction(action);
    }


}
